home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / CC_C / 0335.ZIP / SCRNMISC.C < prev    next >
Text File  |  1985-05-07  |  5KB  |  172 lines

  1. /**
  2. * These are functions written using the Lattice 2.12 compiler
  3. * that set, move and write to the CRT. Standard DOS Calls are
  4. * used. This is extracted from a larger program
  5. *
  6. * Garth Kennedy    Hinsdale, Ill  9 Nov 1984
  7. **/
  8.  
  9. #include "_main.c"
  10. int curpos[6];                 /* cursor position array */
  11. /**
  12. * curpos[0] - text row,              curpos[3] - dot row    
  13. * curpos[1] - text column            curpos[4] - dot column 
  14. * curpos[2] - display page number    curpos[5] - dot color  
  15. **/
  16.  
  17. /**
  18. * scrnclr()
  19. *
  20. * Clear screen    regardless of mode
  21. *
  22. * Garth Kennedy  29 Oct 1984
  23. **/
  24.  
  25. scrnclr()
  26. {
  27.     int intno = 0x10;            /* interrupt to VIDEO_IO */
  28.     union REGS inregs;           /* input regs */
  29.     union REGS outregs;          /* output regs */
  30.  
  31.     inregs.h.ah = 0x0F;          /* return current video state */
  32.     int86(intno,&inregs,&outregs);
  33.  
  34.     inregs.h.ah = 0x00;          /* set display mode */
  35.     inregs.h.al = outregs.h.al;    /* to current mode */
  36.  
  37.     int86(intno,&inregs,&outregs);
  38.     
  39.     return;
  40. }
  41. /**/
  42.  
  43. /**
  44. * scrnpos(x,y)
  45. *
  46. * Move the cursor the the row, column set by x,y
  47. *
  48. * Garth Kennedy  29 Oct 1984
  49. **/
  50.  
  51. scrnpos(x,y)
  52. int x;          /* row */
  53. int y;          /* column */
  54. {
  55.     int intno = 0x10;            /* interrupt to VIDEO_IO */
  56.     union REGS inregs;           /* input regs */
  57.     union REGS outregs;          /* output regs */
  58.  
  59.     inregs.h.ah = 0x02;          /* set cursor position */
  60.     inregs.h.dh = x;             /* row to go to */
  61.     inregs.h.dl = y;             /* column to go to */
  62.     inregs.h.bh = 0x00;          /* page 0 */
  63.  
  64.     int86(intno,&inregs,&outregs);
  65.     
  66.     return;
  67. }
  68. /**/
  69. /**
  70. *  scrnwhr(curpos)
  71. * return position (row/column) and page number
  72. * curpos [0] - row, curpos[1] - column, curpos[2] - page number
  73. * curpos[3] - dot row , curpos[4] - dot column, curpos[5] - color 
  74. * Garth Kennedy  30 Oct 1984
  75. **/
  76.  
  77. scrnwhr(curpos)
  78. int curpos[];
  79. {
  80.     int intno = 0x10;            /* interrupt to VIDEO_IO */
  81.     union REGS inregs;           /* input regs */
  82.     union REGS outregs;          /* output regs */
  83.  
  84.     inregs.h.ah = 0x0F;          /* return current video state */
  85.     int86(intno,&inregs,&outregs);
  86.     curpos[2] = outregs.h.bh;           /* current page */
  87.     
  88.     inregs.h.bh = outregs.h.bh;  /* move current page */
  89.     inregs.h.ah = 0x03;          /* read cursor position */
  90.     int86(intno,&inregs,&outregs);
  91.     curpos[0] = outregs.h.dh;            /* row */
  92.     curpos[1] = outregs.h.dl;            /* column */
  93.     return;
  94. }
  95. /**/
  96. /**
  97. * setcrt(al)
  98. *
  99. * Set the CRT display mode
  100. *  al = 0    40X25 BW Text       al = 4  320X200 Color Graphics
  101. *  al = 1    40X25 Color Text    al = 5  320X200 BW Graphics
  102. *  al = 2    80X25 BW Text       al = 6  640X200 BW Graphics
  103. *  al = 3    80X25 Color Text    
  104. *
  105. * Garth Kennedy  9 Nov 1984
  106. **/
  107. setcrt(al)
  108. int al;
  109. {
  110.     int intno = 0x10;            /* interrupt to VIDEO_IO */
  111.     union REGS inregs;           /* input regs */
  112.     union REGS outregs;          /* output regs */
  113.  
  114.     inregs.h.ah = 0x00;          /* set display mode */
  115.     inregs.h.al = al;            /* to requested mode */
  116.  
  117.     int86(intno,&inregs,&outregs);
  118.     
  119.     return;
  120. }
  121. /**/
  122. /**
  123. * grfpos(dx,dy,l)
  124. *
  125. * position the graphics "cursor" and turn to dot at that point to
  126. * the color given by l.- dx - row, dy - column
  127. *  !!! This does nothing with the text cursor  !!!
  128. *  Garth Kennedy  9 Nov 1984
  129. **/
  130.  
  131. grfpos(dx,dy,l)
  132. int dx,dy,l;
  133. {
  134.     int intno = 0x10;            /* interrupt to VIDEO_IO */
  135.     union REGS inregs;           /* input regs */
  136.     union REGS outregs;          /* output regs */
  137.  
  138.     inregs.h.ah = 0x0C;          /* write dot */
  139.     inregs.x.dx = dx;            /* row to go to */
  140.     inregs.x.cx = dy;            /* column to go to */
  141.     inregs.h.al = l;             /* color value */
  142.  
  143.     int86(intno,&inregs,&outregs);
  144.     
  145.     return;
  146. }
  147.  
  148. /**
  149. *  grfwhr(curpos)
  150. * return color given dot position (row/column) 
  151. * curpos [0] - row, curpos[1] - column, curpos[2] - page number
  152. * curpos[3] - dot row , curpos[4] - dot column, curpos[5] - color 
  153. * Garth Kennedy  9 Nov 1984
  154. **/
  155.  
  156. grfwhr(curpos)
  157. int curpos[];
  158. {
  159.     int intno = 0x10;            /* interrupt to VIDEO_IO */
  160.     union REGS inregs;           /* input regs */
  161.     union REGS outregs;          /* output regs */
  162.     
  163.     inregs.x.dx = curpos[3];     /* dot row */
  164.     inregs.x.cx = curpos[4];     /* dot column */
  165.     inregs.h.ah = 0x0D;          /* read dot color */
  166.     int86(intno,&inregs,&outregs);
  167.     curpos[5] = outregs.h.al;    /* pull out color of dot */
  168.     return;
  169. }
  170.